NEW YORK -- J.R. Smith hasn't had a run like this since high school.
No NBA reserve has in more than two decades.
"He is focused. He is dialed in. Locked in," Carmelo Anthony said. "He is playing extremely well and his confidence is sky high. We are following his lead."
Anthony had 32 points and Raymond Felton added 18 for the Knicks, who have the longest current streak in the NBA. They built a 30-point lead that was reduced to single digits for the second game in a row.
Smith had 23 points at halftime, shooting 9 of 11 from the field. He is the first player with three straight 30-point games as a reserve since Ricky Pierce in 1990.
"Last run I was on like this was in high school and that was too easy," Smith said. "But, I got a great cast with Melo and Ray. We have so many threats out there. It's hard to honor each person every game. So depending on who's got it going, it just so happens it's my turn."
The Knicks held their biggest lead of the game at 58-28 when Smith hit a 3-pointer with 5:24 left in the first half. The Bobcats then went on a 19-9 run to pull within 20 before Anthony's two free throws gave the Knicks a 69-47 halftime lead.
After shooting 62.5 percent (25 of 40) from the field and 75 percent (9 of 12) from 3-point range in the first half, the Knicks went cold in the third quarter, going 5 of 18 from the field and missing all four shots behind the arc.
The Bobcats took advantage and pulled within 83-69 on Jeffery Taylor's free throws with 39 seconds left in the quarter.
However, Felton's layup and three free throws by Smith gave the Knicks an 88-69 lead after three quarters.
The Knicks' struggles persisted in the fourth quarter and the Bobcats continued to cut their deficit. Gordon's 3-pointer with 2:57 left brought Charlotte within 102-93 and Josh McRoberts followed with a dunk with 2:05 to go and the Knicks' lead was down to seven.
"At the end of the day, we've got to find ways to close games better," Felton said. "Against a team that might be a little bit better than the Bobcats, it could go either way."
Smith hit a short floater with 1:02 left. Then, after Henderson's two free throws again brought the Bobcats within seven, Anthony hit two free throws, Smith made one, and Anthony sank a jumper to secure the victory.
"We got a lot of fight," Henderson said. "It's just tough when you see you're down 30. It's hard to see the light. We got a lot of guys with pride and a lot heart. We just couldn't come up with it at the end of the game."
Charlotte took its only lead on the game's opening basket by Henderson.
The Knicks shot 83.3 percent from 3-point range (5 of 6) in the first quarter and took a 38-20 lead. They didn't commit a turnover in the period, while the Bobcats had six.
"You like to win big when you are up big, but to me a win is a win," said Knicks coach Mike Woodson. "But, we are not closing it out the way we should."
But they are opening them the way they should, and their Atlantic Division lead is up to 3 1/2 games over the Nets.
The Knicks recorded their last seven-game winning streak from Feb. 4-15, 2012. ... The Knick have beaten the Bobcats five straight times. The Bobcats' last win in this series was a 118-110 victory on Jan. 4, 2012. The Knicks won the teams' only other meeting this season, 100-98, on Dec. 5 in Charlotte. ... Tyson Chandler missed his ninth straight game for the Knicks with a bulging disc. ... The Knicks have produced 30-point leads in consecutive games for the first time since doing it in back-to-back games against Portland and Indiana on March 14 and 16, 2012, according to STATS, LLC.